
use std::env::var;
use std::{env, fs};
use std::path::PathBuf;

fn main(){

    let out_path = PathBuf::from(var("OUT_DIR").unwrap());
    let target_os = var("CARGO_CFG_TARGET_OS").unwrap();
    let lib_dir = PathBuf::from(var("CARGO_MANIFEST_DIR").unwrap()).join("lib");
    let out_build_dir = out_path.parent().unwrap().parent().unwrap().parent().unwrap();
    let out_deps_dir = out_build_dir.join("deps");


    println!("cargo:rustc-link-search={}", out_path.display());
    println!("cargo:rustc-link-search={}", out_build_dir.display());
    println!("cargo:rustc-link-search={}", out_deps_dir.display());

    // for env in env::vars() {
    //     println!("cargo:warning={}:{}", env.0, env.1);
    // }

    if target_os.contains("windows")  {
        fs::copy(lib_dir.join("win").join("libusb-1.0.dll"),
                 out_build_dir.join("libusb-1.0.dll")).unwrap();

        fs::copy(lib_dir.join("win").join("libusb-1.0.lib"),
                 out_path.join("libusb-1.0.lib")).unwrap();

        println!("cargo:rustc-link-lib=libusb-1.0");

    }else if target_os.contains("android") {
        let android_abi = var("CARGO_CFG_TARGET_ARCH").unwrap();

        let mut dyn_dir = lib_dir.join("android");

        if android_abi=="aarch64" {
            dyn_dir = dyn_dir.join("arm64-v8a");
        }
        if android_abi=="armv7" {
            dyn_dir = dyn_dir.join("armeabi-v7a");
        }
        if android_abi=="x86_64" {
            dyn_dir = dyn_dir.join("x86_64");
        }
        if android_abi=="i686" {
            dyn_dir = dyn_dir.join("x86");
        }

        fs::copy(dyn_dir.join("libusb1.0.so"),
                 out_build_dir.join("libusb1.0.so")).unwrap();
        fs::copy(dyn_dir.join("libusb1.0.so"),
                 out_deps_dir.join("libusb1.0.so")).unwrap();

        println!("cargo:rustc-link-lib=usb1.0");
    }else {
        let arch = var("CARGO_CFG_TARGET_ARCH").unwrap();
        fs::copy(lib_dir.join("unix").join(arch.clone()).join("libusb-1.0.so"),
                 out_path.join("libusb-1.0.so")).unwrap();
        fs::copy(lib_dir.join("unix").join(arch.clone()).join("libusb-1.0.so"),
                 out_build_dir.join("libusb-1.0.so")).unwrap();

        println!("cargo:rustc-link-lib=usb-1.0");
    }




}